package com.show.business.device.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.show.business.common.core.domain.AjaxResult;
import com.show.business.device.bean.DeviceManage;
import com.show.business.device.bean.vo.DeviceGroupSet;

import java.util.List;

/**
 * <p>
 * 设备管理 服务类
 * </p>
 *
 * @author dvlp
 * @since 2024-09-30
 */
public interface IDeviceManageService extends IService<DeviceManage> {
    /**
     * 列表查询
     * @param deviceManage
     * @return
     */
    List<DeviceManage> getList(DeviceManage deviceManage);

    /**
     * 根据imei查询设备信息
     * @param imei
     * @return
     */
    DeviceManage getDeviceByImei(String imei);

    /**
     * 新增
     * @param deviceManage
     * @return
     */
    AjaxResult saveInfo(DeviceManage deviceManage);

    /**
     * 编辑
     * @param deviceManage
     * @return
     */
    AjaxResult editInfo(DeviceManage deviceManage);

    /**
     * 详情
     * @param id
     * @return
     */
    AjaxResult getInfo(String id);

    /**
     * 删除
     * @param id
     * @return
     */
    AjaxResult delInfo(String id);
    /**
     * 批量删除
     * @param ids
     * @return
     */
    AjaxResult delInfos(String[] ids);

    /**
     * 启用设备
     * @param deviceId
     * @return
     */
    AjaxResult enable(String deviceId);

    /**
     * 禁用设备
     * @param deviceId
     * @return
     */
    AjaxResult disable(String deviceId);

    /**
     * 获取分组设备列表查询
     * @param deviceManage
     * @return
     */
    List<DeviceManage> getListByGroup(DeviceManage deviceManage);

    /**
     * 获取未分组设备列表查询
     * @return
     */
    List<DeviceManage> getListByNoGroup(DeviceManage deviceManage);

    /**
     * 取消设备分组
     */
    AjaxResult groupDeviceCancel(DeviceGroupSet groupSet);

    /**
     * 批量取消设备分组
     */
    AjaxResult groupDeviceCancelAll(String groupId, String[] deviceIds);

    /**
     * 批量选择分组设备
     */
    AjaxResult groupDeviceSelectAll(String groupId, String[] deviceIds);

    /**
     * 首页列表查询
     * @param deviceManage
     * @return
     */
    List<DeviceManage> getDeviceList(DeviceManage deviceManage);

    /**
     * 统计设备信息
     * @return
     */
    int staticDeviceNum();

    /**
     * 统计异常设备信息
     * @return
     */
    int staticUnusualDeviceNum();

    /**
     * 统计正常线路信息
     * @return
     */
    int staticLineNum();

    /**
     * 统计异常线路信息-1
     * @return
     */
    int staticUnusualLineNum1();

    /**
     * 统计异常线路信息-2
     * @return
     */
    int staticUnusualLineNum2();
}
